群晖 DSM 原生环境:acme.sh + 阿里云自动续签泛域名证书指南

前言

在群晖(Synology)上配置 HTTPS 证书,很多教程会推荐使用 Docker 镜像。但如果你追求系统的简洁与极致性能,使用原生的 acme.sh 脚本其实是更好的选择。它占用资源极低,且通过 DNS API 验证方式可以轻松申请到 泛域名证书.**.com),省去了开启 80 端口的麻烦。

本文将手把手带你完成从开启 SSH 到实现永久自动续签的全过程。


1. 准备工作:开启 SSH 与权限

首先,我们需要进入群晖的后台系统。

  1. 开启 SSH:登录 DSM,进入 控制面板 > 终端机和 SNMP,勾选“启动 SSH 功能”。


2. 连接终端:使用工具(如 PowerShell 或 Terminal)输入:

1
ssh 你的用户名@群晖IP

3. 切换 Root:输入 sudo -i 并再次输入密码,确保命令提示符变为 root@...
提示:首次连接输入yes


2. 获取阿里云 AccessKey

为了让脚本能自动在你的域名下添加 DNS 解析进行校验,需要获取 API 授权:

  1. 登录 阿里云 RAM 控制台
  2. 创建一个 用户(建议专门起个名,如 nas_acme),勾选 OpenAPI 调用访问
  3. 为其添加权限:AliyunDNSFullAccess
  4. 务必保存好生成的 AccessKey IDAccessKey Secret

3. 安装 acme.sh 脚本

由于群晖环境的特殊性(找不到标准 crontab),我们需要通过强制参数安装在特定目录。

1
2
3
4
5
6
7
8
# 进入你习惯存放脚本的目录
cd /volume1/其他/acme.sh/

# 执行安装流程,请替换为你真实的邮箱
./acme.sh --install --force -m 你的邮箱@qq.com

# 刷新环境变量,让 acme.sh 命令全局有效
source ~/.profile

4. 申请泛域名证书

填入你的阿里云密钥并启动申请。申请过程会自动向阿里云 DNS 注入 TXT 记录,并等待约 2 分钟完成验证。

1
2
3
4
5
6
# 导入密钥(脚本会自动加密保存到 account.conf)
export Ali_Key="你的AccessKeyID"
export Ali_Secret="你的AccessKeySecret"

# 申请泛域名证书(wokoo.top 请换成你自己的域名)
acme.sh --issue --dns dns_ali -d 你自己的域名

5. 部署证书到群晖面板

申请成功后,我们需要将证书“推”进控制面板。注意:如果账号开启了双重验证(2FA),建议先关闭。

1
2
3
4
5
6
7
8
# 设置部署参数
export SYNO_Username='你的群晖登录账号'
export SYNO_Password='你的密码'
export SYNO_Certificate="Ali_Cert" # 证书在 DSM 显示的名称
export SYNO_Create=1 # 首次部署必须开启创建

# 执行部署到本台设备
acme.sh --deploy -d 上面的域名 --deploy-hook synology_dsm --home /root/.acme.sh/

6. 配置永久自动续签

证书有效期通常为 90 天。我们通过 DSM 内置的“任务计划”来补全缺少的 Cron 机制。

  1. 进入 控制面板 > 任务计划 > 新增 > 计划的任务 > 用户定义的脚本
  2. 任务名称Auto_Renew_SSL,用户账号务必选择 root
  3. 计划:设定为 每周运行一次(脚本会自动判断是否快过期,不到期不操作)。
  4. 运行设置(输入以下指令):
1
/root/.acme.sh/acme.sh --cron --home /root/.acme.sh/ --renew-hook "/root/.acme.sh/acme.sh --deploy -d 你的域名 --deploy-hook synology_dsm --home /root/.acme.sh/"


总结

到这一步,你已经拥有了一套成熟的证书自动化方案。只需在群晖证书界面的 “设置” 中,将所有服务(Web Station, Drive, 系统默认)都指向新生成的 Ali_Cert 即可享受全站 HTTPS 绿色小锁。